package com.misboot.document.service;

import cn.hutool.core.date.DateTime;
import com.misboot.document.model.DfsFile;
import com.misboot.document.utils.PageUtil.PageParam;
import com.misboot.document.utils.PageUtil.PageSet;

import java.util.List;
import java.util.Map;

/**
 * File
 *
 * @Author 湖南佐佑时代科技有限公司
 * @Version 5.4.21
 * @Email service@zuoyo.com
 * @Date 2022-06-16 13:31:39
 */
public interface DfsFileService extends DocumentBaseService<DfsFile, String> {

	/**
	 * 分页
	 *
	 * @return
	 * @Param pageParam 分页参数
	 * @Param filterSort 过滤排序字段
	 */
    PageSet<DfsFile> getPageSet(PageParam pageParam, String filterSort,String fileName,String puuid);

	String getDataCountByPuuid(String puuid);

    PageSet<DfsFile> getPageSetUuids(PageParam pageParam, String filterSort, String uuids);

	List<DfsFile> getListByPuuid (String filterSort);

	/**
	 * 查询fdfs文件
	 *
	 * @param uuid 主键
	 * @return DfsFile
	 */
	DfsFile queryObject(String uuid);

	/**
	 * 查询fdfs文件
	 *
	 * @param map
	 * @return List
	 */
	List<DfsFile> queryList(Map<String, Object> map);

	/**
	 * 查询fdfs文件条数
	 *
	 * @param map
	 * @return int
	 */
	int queryTotal(Map<String, Object> map);

	/**
	 * 保存数据
	 *
	 * @param dfsFile
	 * @return int
	 */
    int executeSave(DfsFile dfsFile);

	/**
	 * 更新数据
	 *
	 * @param dfsFile
	 * @return int
	 */
	int executeUpdate(DfsFile dfsFile);

	/**
	 * 根据uuid批量删除数据
	 *
	 * @param uuid
	 * @return
	 */
	int executeDelete(String uuid);

	/**
	 * 根据uuid批量删除数据
	 *
	 * @param uuids
	 * @return
	 */
	int executeDeleteBatch(String[] uuids);

	int executeDeleteByName(String fileName);

	/**
	 * 获取最大版本的文件
	 *
	 * @param originalFilename
	 * @return List
	 */
    List<DfsFile> getMaxVersionByFileName(String originalFilename);


	//根据关联uuid查询附件uuid
	List<String> getAccessorylByOaRelevanceUuid(String oaRelevanceUuid);

	PageSet<DfsFile> getOaPageSet(PageParam pageParam, String filterSort, List <String> uuids);

	String getFileNameByUuid(String uuid);

	List<DfsFile> getDfsFileByPuuids(String[] puuids);

	int deleteDfsFiles(String[] puuid);

    String selectCopyFileUrlByBusinessUuid(String businessUuid);

	Integer updateCopyFileUrlByBusinessUuid(String businessUuid, String mainBody, String modifier, String modifierId, DateTime modifyTime);
}
